草庐IT

c++ - 启动时的 Qt 全屏

全部标签

c - Data_wrap_struct 和标记函数

我正在编写一个Ruby扩展,我正在使用函数Data_wrap_struct。为了参与Ruby的标记和清除垃圾收集过程,我需要定义一个例程来释放我的结构,以及一个例程来标记从我的结构到其他结构的任何引用。我通过经典的free函数来释放内存,但我不知道如何使用标记函数。我的结构听起来像这样typedefstruct{intx;inty;}A;typedefstruct{Acollection[10];intcurrent;}B;我认为我需要一个标记函数来标记结构B的collection中的引用。谁能给我看一个例子,看看标记函数是如何工作的? 最佳答案

c - C 扩展中的 Ruby 关键字参数

如何处理来自C扩展的Ruby2.0.0关键字参数?背景defexample(name:'Bob'hat_color:'red')puts"#{name}hasa#{hat_color}hat!"endexample#=>"Bobhasaredhat!"example(name:'Joe',hat_color:'blue')#=>"Joehasabluehat!"关键字参数(如上)在处理具有许多不同调用序列或选项的方法时非常有用。我在C扩展中有一个这样的方法(一种处理我项目中大部分OpenGL绘图的blit方法),我想知道如何让该方法处理来自ruby​​的关键字参数。想法根据我所做的一些

c - Ruby 的 Enumerable#zip 是否在内部创建数组?

在Ruby-ComparetwoEnumeratorselegantly,据说Theproblemwithzipisthatitcreatesarraysinternally,nomatterwhatEnumerableyoupass.There'sanotherproblemwithlengthofinputparams我查看了YARV中Enumerable#zip的实现,并看到了staticVALUEenum_zip(intargc,VALUE*argv,VALUEobj){inti;IDconv;NODE*memo;VALUEresult=Qnil;VALUEargs=rb_ar

我可以覆盖用 C 编写的 Ruby 方法吗?

是否可以使用Ruby代码覆盖Ruby本身的一部分方法,例如rb_error_frozen,它们是用C语言编写的?背景:我想知道当卡住的对象被修改时,是否有可能让Ruby仅记录警告,而不引发异常。这样,我可以记录各种状态修改,而不是在第一次发生时停止。我主要考虑使用YARV执行此操作,但如果这样更容易,我可以使用其他实现。是的,这是一个whyday项目!不要在生产环境中尝试这个! 最佳答案 我只能代表MRI/YARV,但我会试一试。如果C函数已明确定义为Ruby对象上的方法,则只能在Ruby中覆盖源自C的函数。例如,Kernel#ex

ruby-on-rails - `*` 用作参数时的含义(不像*arg,只是*)

这个问题在这里已经有了答案:nakedasteriskasparameterinmethoddefinition:deff(*)(1个回答)关闭9年前。当我在阅读Rails代码时,我发现了这个defsave(*)create_or_update||raise(RecordNotSaved)end*有什么作用?:O我知道当我们像*args一样使用它时会发生什么,但在这种情况下,它只是普通的*。引用https://github.com/rails/rails/blob/master/activerecord/lib/active_record/persistence.rb#L119

ruby-on-rails - 如何分析 Rails 应用程序的启动?

简单的问题,我有一个遗留的Rails2.3应用程序,它需要很长时间才能完成任何事情。rake花费了超过25秒,但看起来并没有真正发生任何事情。有什么简单的方法可以让我从应用程序加载时获取某种探查器转储,以查看哪些方法花费的时间最长?同时适用于Rails2.3和3.1的解决方案会更有帮助。 最佳答案 分析一个需要rails环境的rake任务,像这样:desc"Loadit"task:loadit=>:environmentdoend然后使用ruby​​-prof配置文件ruby-Ilib-Sruby-prof-pgraph_html`

ruby - 首先 vagrant up 有效,但在停止/启动后出现 ruby​​ 错误

我已经安装了ruby2.1.6,vagrant1.7.2abdvirtualbox4.3.28。第一个vagrantup工作正常,盒子被下载,服务器工作,但是当我运行halt然后尝试另一个vagrantup我得到下面的ruby​​错误信息C:/Users/Mike/.vagrant.d/gems/gems/childprocess-0.5.6/lib/childprocess/windows/lib.rb:308:[BUG]Segmentationfaultruby2.0.0p353(2013-11-22)[i386-mingw32]//lotsofoutputlistingrubyf

ruby - 拆分开始和结束时的空字符串

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:SplitprobleminRuby在Ruby中,当我使用与字符串开头匹配的定界符拆分字符串时,它会在数组的初始位置给出一个空字符串:"abc".split(/a/)#=>["","bc"]但是当我用匹配字符串末尾的分隔符做类似的事情时,它不会给出空字符串:"abc".split(/c/)#=>["ab"]这在我看来不一致。这样的规范有什么理由吗?编辑如果它要与Perl的规范兼容,就像muu中的short答案一样,那么问题仍然是一样的:为什么它在Perl中是这样的?由于这个原因,现在它也变成了一个关于Perl

ruby - 在 ruby​​ 测试中启动 Web 服务器

我正在编写一个库来包装tsung的功能,以便Rails应用程序可以更好地使用它。我想编写一些集成测试,归结为以下内容:启动一个简单的网络服务器通过库运行tsung-recorder启动selenium,将firefox配置文件配置为使用tsung代理,并让它从第1步启动的服务器获取页面检查记录的库(它存在,在正确的位置等)对于第1步,虽然我可以在外部启动一个vanillarails应用程序(例如,%x{railss}),但我很确定有更好的方法以编程方式创建一个简单的网络服务器适合测试。tl;dr-在测试中以编程方式启动简单网络服务器的方法是什么? 最佳答案

ruby - 使用 watir-webdriver 以全屏模式打开浏览器

我知道这是一个非常愚蠢的问题。然而,我无法找到如何使用watirwebdriver使浏览器以全屏模式打开。我尝试使用maximize()但没有成功。代码如下所示:require"rubygems"require"watir-webdriver"ff=Watir::Browser.new(:firefox)ff.goto("http://google.com")ff.maximize()得到错误“未定义的方法最大化” 最佳答案 现在,可以最大化浏览器做的事情:require"rubygems"require"watir-webdriv